<template>
  <div class="score-case">
    <div class="table">
      <table>
        <thead>
          <tr>
            <th>编号</th>
            <th>科目</th>
            <th>成绩</th>
            <th>考试时间</th>
            <th>操作</th>
          </tr>
        </thead>
        <tbody v-if="this.list.length > 0">
          <tr v-for="(item, index) in list" :key="item.id">
            <td>{{ index + 1 }}</td>
            <td>{{ item.subject }}</td>
            <td v-if="item.score < 60" class="red">{{ item.score }}</td>
            <td v-else>{{ item.score }}</td>
            <td>{{ shijian(item.date) }}</td>
            <td><a href="#" @click="del(item.id)">删除</a></td>
          </tr>
        </tbody>
        <tbody v-else>
          <tr>
            <td colspan="5">
              <span class="none">暂无数据</span>
            </td>
          </tr>
        </tbody>
        <tfoot>
          <tr>
            <td colspan="5">
              <span>总分：{{ Totalscore }}</span>
              <span style="margin-left: 50px">平均分：{{ Averagescore }}</span>
            </td>
          </tr>
        </tfoot>
      </table>
    </div>
    <div class="form">
      <div class="form-item">
        <div class="label">科目：</div>
        <div class="input">
          <input v-model="subject" type="text" placeholder="请输入科目" />
        </div>
      </div>
      <div class="form-item">
        <div class="label">分数：</div>
        <div class="input">
          <input v-model.number="score" type="text" placeholder="请输入分数" />
        </div>
      </div>
      <div class="form-item">
        <div class="label"></div>
        <div class="input">
          <button class="submit" @click.prevent="add">添加</button>
        </div>
      </div>
    </div>
  </div>
</template>

<script>
import dayjs from 'dayjs'
export default {
  name: 'ScoreCase',
  data () {
    return {
      // list: [
      //   { id: 15, subject: '语文', score: 89, date: new Date('2022/06/07 10:00:00') },
      //   { id: 27, subject: '数学', score: 100, date: new Date('2022/06/07 15:00:00') },
      //   { id: 32, subject: '英语', score: 56, date: new Date('2022/06/08 10:00:00') },
      //   { id: 41, subject: '物理', score: 76, date: new Date('2022/06/08 10:00:00') }
      // ],
      list: JSON.parse(localStorage.getItem('list')) || [],
      subject: '', // 科目
      score: ''// 分数
    }
  },
  methods: {
    // 处理时间
    shijian (data) {
      return dayjs(data).format("YYYY-MM-DD hh:mm:ss")
    },

    // 点击删除
    del (id) {

      console.log(id)

      this.list = this.list.filter(item => item.id !== id)

    },

    // 点击添加
    add () {
      // console.log(1)
      this.list.push({
        id: +new Date(),
        subject: this.subject,
        score: this.score,
        date: new Date('2022/06/08 10:00:00')
      }
      )

    }
  },
  // 计算属性
  computed: {
    // 总分数
    Totalscore () {
      return this.list.reduce((sum, item) => {
        return sum + item.score
      }, 0)
    },

    // 平均分
    Averagescore () {
      if (this.list.length === 0) return 0
      return (this.Totalscore / this.list.length).toFixed(2)
    }

  },

  // 侦听器
  watch: {

    list (value) {

      // console.log(value)

      localStorage.setItem('list', JSON.stringify(value))

    }

  }
}
</script>

<style>
.score-case {
  width: 1000px;
  margin: 50px auto;
  display: flex;
}
.score-case .table {
  flex: 4;
}
.score-case .table table {
  width: 100%;
  border-spacing: 0;
  border-top: 1px solid #ccc;
  border-left: 1px solid #ccc;
}
.score-case .table table th {
  background: #f5f5f5;
}
.score-case .table table tr:hover td {
  background: #f5f5f5;
}
.score-case .table table td,
.score-case .table table th {
  border-bottom: 1px solid #ccc;
  border-right: 1px solid #ccc;
  text-align: center;
  padding: 10px;
}
.score-case .table table .red {
  color: red;
}
.score-case .table .none {
  height: 50px;
  line-height: 100px;
  color: #999;
}
.score-case .form {
  flex: 1;
  padding: 20px;
}
.score-case .form .form-item {
  display: flex;
  margin-bottom: 20px;
  align-items: center;
}
.score-case .form .form-item .label {
  width: 60px;
  text-align: right;
  font-size: 14px;
}
.score-case .form .form-item .input {
  flex: 1;
}
.score-case .form .form-item input,
.score-case .form .form-item select {
  appearance: none;
  outline: none;
  border: 1px solid #ccc;
  width: 200px;
  height: 40px;
  box-sizing: border-box;
  padding: 10px;
  color: #666;
}
.score-case .form .form-item input::placeholder {
  color: #666;
}
.score-case .form .form-item .cancel,
.score-case .form .form-item .submit {
  appearance: none;
  outline: none;
  border: 1px solid #ccc;
  border-radius: 4px;
  padding: 4px 10px;
  margin-right: 10px;
  font-size: 12px;
  background: #ccc;
}
.score-case .form .form-item .submit {
  border-color: #069;
  background: #069;
  color: #fff;
}
</style>
